/**
 * Copyright(C) com.allinpay - 老纳慢走
 * 
 * @akonziz 陆某人
 *
 * @since 2013年9月25日
 * @description: <描述>
 * 
 */

// foundational JavaScript function 

/**
 * 当前tab跳转
 * @param x
 */
function goUrl(x)
{
	window.location.href=x;
}

function replaceUrl(x)
{
	window.location.replace(x);
}

/**
 * 跳转到另外的tab
 * @param x
 */
function goTarget(x){
	window.location.target="_ablank";
	window.location.href=x;
}

/*
 * js tool function
 */

function isValide(obj){
	return !(obj == null || obj === undefined || typeof(obj) === "undefined");
}

//prototype为对象原型，注意这里为对象增加自定义方法的方法。
String.prototype.trim = function() {
	return this.replace(/(^\s*)|(\s*$)/g, "");
};
String.prototype.ltrim = function() {
	return this.replace(/(^\s*)/g, "");
};
String.prototype.rlrim = function() {
	return this.replace(/(\s*$)/g, "");
};

/*
concat方法：返回一个新数组，这个新数组是由两个或更多数组组合而成的。
　　　　　　这里就是返回this.slice(0,n)/this.slice(n+1,this.length)
　　　　　　组成的新数组，这中间，刚好少了第n项。
slice方法： 返回一个数组的一段，两个参数，分别指定开始和结束的位置。
*/
//Array.prototype.remove=function(n){
//	if(n<0)
//		return this;
//	else
//		return this.slice(0,n).concat(this.slice(n+1,this.length));
//};

/**
 *  value (0~9) return 00 ~ 09
 */
function format2digit(value) {
	return (value > 9 || value < 0) ? (value) : ( "0" + (value));
}



function ef_alert(str) {
	//alert(str);
}

/*
 *  Ajax request 
 */

function ajax_post(ajax_url,  ajax_data, ajax_fb, ajax_fs, ajax_fer, ajax_fc){
	ajax_request("POST", ajax_url,  ajax_data, ajax_fb, ajax_fs, ajax_fer, ajax_fc);
}

function ajax_get(ajax_url,  ajax_data, ajax_fb, ajax_fs, ajax_fer, ajax_fc){
	ajax_request("GET", ajax_url,  ajax_data, ajax_fb, ajax_fs, ajax_fer, ajax_fc);
}

function ajax_post_json(ajax_url,  ajax_data, ajax_fb, ajax_fs, ajax_fer, ajax_fc){
	$.ajaxSetup({
		contentType:"application/json",
        //data:JSON.stringify(ajax_data),
        processData:false,
        timeout:30000
	});
	//xhr.setRequestHeader('Content-Type', 'application/json;charset=utf-8');
	//xhr.setRequestHeader('Accept', 'application/json');
	ajax_request("POST", ajax_url,  JSON.stringify(ajax_data), ajax_fb, ajax_fs, ajax_fer, ajax_fc);
}

/**
 * 公用的ajax请求函数
 * @param ajax_method  http请求方式 POST, GET
 * @param ajax_url         http请求目标
 * @param ajax_data      http请求数据 eg. {rid:id, ajax_flag: flag}
 * @param ajax_fb         http请求开始时调用的函数       function()
 * @param ajax_fs         http请求成功返回时调用的函数 function(data)
 * @param ajax_fer        http请求失败返回时调用的函数 function(XMLHttpRequest, textStatus, errorThrown)
 */
function ajax_request(ajax_method, ajax_url,  ajax_data, ajax_fb, ajax_fs, ajax_fer, ajax_fc){

$.ajax({
        type:ajax_method,
        url:server_name +"/"+ajax_url,
        data:ajax_data,
        dataType:'json',         
        beforeSend:function(xhr /*XMLHttpRequest*/){
        	if (ajax_fb) ajax_fb();
        	else {
        	}
        },
        success:function(data){
        	//var obj = eval('(' + data + ')');
        	var obj = eval(data);
        	if (ajax_fs) ajax_fs(obj);
        	else {
        	}
        },
        complete: function(event,xhr /*XMLHttpRequest*/,options){
        	if (ajax_fc) ajax_fc(event,xhr,options);
        	else {
        	}
        },
        error: function(xhr /*XMLHttpRequest*/, textStatus, errorThrown) {
        	if (ajax_fer) ajax_fer(xhr, textStatus, errorThrown);
        	else {
        	}
        }
     });
}

function showLoadingDiv() {
    var loadDiv = $("#LoadingDiv");
    if (loadDiv.length > 0) {
        loadDiv.show();
    }
    else {
        //var ldiv = $("<div id=\"LoadingDiv\" style=\"position:fixed; top: 50%; left: 50%; margin-top: -23px; margin-left: -23px; display: none; z-index: 100\"></div>");
        //var ldimg = $("<img width=\"46\" height=\"46\" alt=\"\" src=\"\">");
        //ldimg.appendTo(ldiv);
        //$(".main").after(ldiv);
    }
}
function hideLoadingDiv() {
    var loadDiv = $("#LoadingDiv");
    if (loadDiv.length > 0) {
        loadDiv.hide();
    }
    else { }
}

/*
 * window scroll 
 */

//建立加载判断函数
function checkload(offset, funLoad){
	var srollPos = $(window).scrollTop(); // 滚动条距离顶部的高度
	var windowHeight = $(window).height(); // 窗口的高度
	var dbHiht = $("body").height(); // 整个页面文件的高度

	if((windowHeight + srollPos) >= (dbHiht + offset)){
		//ef_alert(windowHeight + ", " + srollPos + ", " + (dbHiht + offset) );
		if (funLoad) funLoad();
		//s= setTimeout(function(){funLoad();},5);
	}
}

/**
 *  cookie
 */

/*
 1．添加一个cookie：addCookie(name,value,expireHours)
 该函数接收3个参数：cookie名称，cookie值，以及在多少小时后过期：
 */
function addCookie(name, value, expireDay) {
	var cookieString = name + "=" + escape(value);
	//判断是否设置过期时间
	if (expireDay > 0) {
		var date = new Date();
		date.setTime(date.getTime + expireDay * 24 * 3600 * 1000);
		cookieString = cookieString + "; expire=" + date.toGMTString();
	}
	document.cookie = cookieString;
}

/*
 2．获取指定名称的cookie值：getCookie(name)
 该函数返回名称为name的cookie值，如果不存在则返回空：
 */
function getCookie(name) {
	var strCookie = document.cookie;
	var arrCookie = strCookie.split("; ");
	for ( var i = 0; i < arrCookie.length; i++) {
		var arr = arrCookie[i].split("=");
		if (arr[0] == name)
			return arr[1];
	}
	return "";
}

/*
 3．删除指定名称的cookie：deleteCookie(name)
 该函数可以删除指定名称的cookie ：
 */
function deleteCookie(name) {
	var date = new Date();
	date.setTime(date.getTime() - 24 * 3600 * 1000 /*10000*/);
	document.cookie = name + "=v; expire=" + date.toGMTString();
}


function isValidDate(str){
	var reg = /^\d{4}-(0\d|1[0-2])-([0-2]\d|3[01])( ([01]\d|2[0-3])\:[0-5]\d\:[0-5]\d)$/;

	var r = str.match(reg);   
    if(r==null)return false;

    return true;
}

function isValidPhoneNumber(str){
	var mobile = /^(((13[0-9]{1})|(14[0-9]{1})|(15[0-9]{1})|(16[0-9]{1})|(17[0-9]{1})|(18[0-9]{1})|(19[0-9]{1}))+\d{8})$/;
	return (str.length == 11 && mobile.test(str));
}


/**
 * Jquery   prompt   alert
 */
function confirm(msg, ok, cancel, callback, param){
	jConfirm(msg, ok, cancel, function(s) {
		if (callback) {
			callback(s, param);
		}
	});
}

function forward(target, msg, ok, cancel, callback){
	jConfirm(msg, ok, cancel, function(s) {
		if (callback) {
			callback(s, target);
		}else {
			if (s==true) goUrl(target);
		}
	});
}

function goBack(msg, ok, cancel, callback) {
	jConfirm(msg, ok, cancel, function(s) {
		if (callback) {
			callback(s);
		}else {
			if (s==true) window.history.go(-1);
		}
	});
}